package com.petdog.module.auth.controller;

import com.petdog.common.dto.ApiResponse;
import com.petdog.common.service.VerificationCodeService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Profile;
import org.springframework.web.bind.annotation.*;

/**
 * 测试环境认证控制器
 * 仅在测试/开发环境下启用，提供绕过真实邮件发送的验证码功能
 * 解决SMTP连接超时导致无法使用应用的问题
 */
@RestController
@RequestMapping("/api/test/auth")
@Profile({"dev", "test"}) // 只在开发和测试环境启用
public class TestAuthController {
    
    private static final Logger logger = LoggerFactory.getLogger(TestAuthController.class);
    
    @Autowired
    private VerificationCodeService verificationCodeService;
    
    @Value("${spring.profiles.active}")
    private String activeProfile;
    
    /**
     * 生成测试验证码（不发送邮件）
     * @param email 邮箱地址
     * @return 包含验证码的响应
     */
    @GetMapping("/generate-code")
    public ApiResponse<String> generateTestVerificationCode(@RequestParam String email) {
        logger.info("[{}环境] 生成测试验证码，邮箱: {}", activeProfile, email);
        
        // 调用VerificationCodeService中的测试方法生成验证码
        String code = verificationCodeService.generateAndGetTestVerificationCode(email);
        
        // 返回验证码信息（仅测试环境使用）
        return ApiResponse.success("测试验证码已生成，有效期10分钟", "验证码: " + code);
    }
    
    /**
     * 获取当前环境信息
     * @return 环境信息
     */
    @GetMapping("/env-info")
    public ApiResponse<String> getEnvironmentInfo() {
        logger.debug("获取当前环境信息: {}", activeProfile);
        return ApiResponse.success("当前运行环境", activeProfile);
    }
    
    /**
     * 检查服务健康状态
     * @return 健康状态
     */
    @GetMapping("/health")
    public ApiResponse<String> checkHealth() {
        logger.debug("检查服务健康状态");
        return ApiResponse.success("服务运行正常", "当前时间: " + System.currentTimeMillis());
    }
}